/*
 * @Author: 赵成功a 3063126760@qq.com
 * @Date: 2025-01-05 22:47:52
 * @LastEditors: 赵成功a 3063126760@qq.com
 * @LastEditTime: 2025-01-13 21:57:26
 * @FilePath: /linux-learning/thread/thread.cc
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
// #include <iostream>
// #include <pthread.h>
// #include <unistd.h>
// #include <string>
// #include<vector>
// #include<thread>
// #define NUM 10
// using namespace std;
// //C++支持的线程
// void threadrun()
// {
//     while(true)
//     {
//         cout<<"i am a new thread c++"<<endl;
//         sleep(1);
//     }
// }
// int main()
// {
//     thread t1(threadrun);
//     t1.join();
//     return 0;
// }
// void Say(long long int i){
//     cout<<"[new"<<i<<"thread say]:hello"<<endl;
// }
// //int a;
// class Request
// {
// public:
//     Request(int start, int end, string threadname)
//         : start_(start), end_(end), threadname_(threadname)
//     {}
// public:
//     int start_;
//     int end_;
//     string threadname_;
// };
// class Requese
// {
// public:
//     Requese(int result,int exitcode)
//         :result_(result),exitcode_(exitcode)
//     {}
// public:
//     int result_;
//     int exitcode_;
// };

// // string Tohex(pthread_t tid)
// // {
// //     char hex[64];
// //     snprintf(hex, sizeof(hex), "%p", tid);
// //     return hex;
// // }
// // void *threadRoutine(void *arg)
// // {
// //     int a=(long long int)arg;
// //     Say(a);
// //     // while(true){
// //     //     cout<<"[new thread]:"<<"a:"<<a<<"  a的地址为:"<<&a<<endl;
// //     //     a++;
// //     //     sleep(1);
// //     // }
// //     //  const char* a=(char*)arg;
// //     // cout<<a<<endl; 
// //     // while (true)
// //     // {
// //     //     cout << "[new thread tid]:" << Tohex(pthread_self()) << endl;
// //     //     sleep(1);
// //     // }
// //     // Request *rq = (Request *)arg;
// //     // int sum = 0;
// //     // for (int i = rq->start_; i <= rq->end_; i++)
// //     // {
// //     //     sum += i;
// //     // }
// //     // delete rq;
// //     // pthread_exit((void *)sum);
// //     // return (void *)sum;
// //     return nullptr;
// // }
// void *Sumcommit(void *arg)
// {
//     Request *rq=(Request*)arg;
//     Requese*result=new Requese(0,0);
//     for(int i=rq->start_;i<=rq->end_;i++)
//     {
//         result->result_+=i;
//     }
//     result->exitcode_=0;
//     return result;
// }

// int main()
// {
// //     vector<pthread_t>arg;
// //     for(int i=0;i<NUM;i++)
// //     {
// //         pthread_t tid;
// //         pthread_create(&tid, nullptr,threadRoutine, (void *)i);//创建多线程
// //         arg.push_back(tid);
// //         sleep(1);
// //     }
// //    for(int i=0;i<NUM;i++)
// //     {
// //         pthread_join(arg[i],nullptr);
// //     }

//      pthread_t tid;//线程的id
//     // pthread_create(&tid, nullptr,threadRoutine, nullptr);//创建一个线程
//     // while(true){
//     //     cout<<"[old thread]:"<<"a:"<<a<<"  a的地址为:"<<&a<<endl;
//     //     a++;
//     //     sleep(1);
//     // }
//     void *a;
//     Request *rq=new Request(1,100,"thread 1");
//     int ret= pthread_create(&tid, nullptr,Sumcommit, (void *)rq);//创建一个线程
//     pthread_join(tid,&a);//阻塞式等待
//     Requese *b=(Requese*)a;
//     cout<<"结果为："<<b->result_<<endl;
//     cout<<"错误码为："<<b->exitcode_<<endl;
//     // sleep(10);
//     // pthread_cancel(tid);
//     // cout<<"子线程结束运行";

//     //    while(true)
//     //     {
//     //          cout<<"[old therad tid]:"<<getpid()<<endl;
//     // cout<<(int)
//     // cout<<"[old therad ]:"<<Tohex(tid)<<endl;
//     // sleep(2);
//     // }
//     // int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);
//     // thread是输出型参数带出来线程的tid，attr是线程属性//暂时不是特别理解，start_routine是指线程调用的栈（这里传入函数，作为每个线程的入口），arg是输入型参数，传入线程中，作为线程需要的参数
//     //  while(true)
//     // {
//     //     cout<<"[old thread"<<getpid()<<"]你好你好"<<endl;
//     //     sleep(1);
//     // }
//     // sleep(10);
//     return 0;
// }